
package conexion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author monillo007

 */

public class Conexion {
    private Connection conexion;

    /** Creates a new instance of Conexion */
    public Conexion() {
    }

    /**
     * Método utilizado para recuperar el valor del atributo conexion
     *@return conexion contiene el estado de la conexión
     *
     */
    public Connection getConexion()
    {
        return conexion;
    }

    /**
     * Método utilizado para establecer la conexión con la base de datos
     *@return estado regresa el estado de la conexión, true si se estableció la conexión,
     *                          falso en caso contrario
     */
    public boolean crearConexion() throws InstantiationException, IllegalAccessException
    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/dozen","dozen","dozen");
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
            return false;
        }

        return true;
    }

    /**
     *
     *Método utilizado para realizar las instrucciones: INSERT, DELETE y UPDATE
     *@param sql Cadena que contiene la instrucción SQL a ejecutar
     *@return estado regresa el estado de la ejecución, true(éxito) o false(error)
     *
     */
    public boolean ejecutarSQL(String sql)
    {
        try {
            Statement sentencia = conexion.createStatement();
            sentencia.executeUpdate(sql);
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }

        return true;
    }

   /**
     *
     *Método utilizado para realizar la instrucción SELECT
     *@param sql Cadena que contiene la instrucción SQL a ejecutar
     *@return resultado regresa los registros generados por la consulta
     *
     */
    public ResultSet ejecutarSQLSelect(String sql)
    {
        ResultSet resultado;
        try {
            Statement sentencia = conexion.createStatement();
            resultado = sentencia.executeQuery(sql);
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }

        return resultado;
    }

        public Object[][] ResultSetToArray(ResultSet rs)
	    {
	        Object obj[][]=null;
	        try
	        {

	        rs.last();

	        ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();

	        int numCols = rsmd.getColumnCount();

	        int numFils =rs.getRow();

	        obj=new Object[numFils][numCols];
	        int j = 0;

	        rs.beforeFirst();

	        while (rs.next())
	        {
	            for (int i=0;i<numCols;i++)
	            {

	                obj[j][i]=rs.getObject(i+1).toString();
	            }
	            j++;

	        }

	        }
	        catch(Exception e)
        {

	        }

	        return obj;
	    }





}
